﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Caduceu.Estudos.Entidades
{
    public class MovimentoConta : EntidadeBase
    {
        private char tipoMovimento = 'D'; // débito
        private decimal valor;
        
        public virtual char TipoMovimento
        {
            get { return tipoMovimento; }
            set
            {
                if ("D_C".IndexOf(value) == -1)
                {
                    throw new InvalidOperationException("Tipo de Movimento precisa ser D (Débito) ou C (Crédito)");
                }
                tipoMovimento = value;
            }
        }

        public virtual ContaContabil ContaMovimento { get; set; }

        public virtual decimal Valor
        {
            get { return valor; }
            set
            {
                if (value <= 0)
                    throw new InvalidOperationException("Só são permitidos movimentos com valores superiores a zero");

                if ((value - Math.Round(value, 2)) != 0)
                    throw new InvalidOperationException("Não são permitidos lançamentos com mais de 2 casas decimais");

                valor = value;
            }
        }
    }
}
